package com.yang.design_patterns.factory_design_pattern.simple_factory;

/**
 * @Description: 规则配置原
 * @Author: 杨 强
 * @CreateTime: 2022-10-28 11:24
 */
public class RuleConfigSource {

    /**
     * 根据规则配置文件路径加载规则配置
     * @param ruleConfigFilePath 文件路径
     * @return 规则配置类
     */
    public RuleConfig load(String ruleConfigFilePath){
        // 获取文件后缀名
        String ruleConfigFileExtension = getFileExtension(ruleConfigFilePath);

        // 根据不同的文件类型得到不同类型的解析器
        IRuleConfigParser parser = RuleConfigParserFactory.createParser(ruleConfigFileExtension);
        if (parser == null){
            throw new RuntimeException( "Rule config file format is not supported: " + ruleConfigFilePath);
        }

        // 配置文件中的内容
        String configText = "";

        //从ruleConfigFilePath文件中读取配置文本到configText中
        RuleConfig ruleConfig = parser.parse(configText);

        return ruleConfig;
    }

    /**
     * 获取文件后缀名
     * @param filePath 配置文件路径
     * @return 文件后缀
     */
    private String getFileExtension(String filePath) {
        //...解析文件名获取扩展名，比如rule.json，返回json ;
        return "json";
    }
}
